/**
 * * 题目名称：最近的请求次数
 * * 题目地址：https://leetcode-cn.com/problems/number-of-recent-calls
 */

/*
题目：
写一个 RecentCounter 类来计算特定时间范围内最近的请求。

请你实现 RecentCounter 类：

RecentCounter() 初始化计数器，请求数为 0 。
int ping(int t) 在时间 t 添加一个新请求，其中 t 表示以毫秒为单位的某个时间，并返回过去 3000 毫秒内发生的所有请求数（包括新请求）。确切地说，返回在 [t-3000, t] 内发生的请求数。
保证 每次对 ping 的调用都使用比之前更大的 t 值。
*/

// * 思路：通过数组arr将每次请求的时间记录下来，每次调用ping时都遍历arr里记录的时间，判断时间时间小于t-3000时，计数器减一。

var RecentCounter = function() {
    this.counter = 0;
    this.arr = [];
};

/** 
 * @param {number} t
 * @return {number}
 */
RecentCounter.prototype.ping = function(t) {
    this.counter++;
    this.arr.push(t);
    var counter1 = this.counter;
    for(var i=0;i<this.arr.length;i++){
        if(this.arr[i]<t-3000){
            counter1--
        }
    }
    return counter1;
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * var obj = new RecentCounter()
 * var param_1 = obj.ping(t)
 */

// 测试用例
/* 输入["RecentCounter", "ping", "ping", "ping", "ping"]
[[], [1], [100], [3001], [3002]]
*/


console.time('执行用时');
var obj = new RecentCounter();
console.log(obj.ping(642));
console.log(obj.ping(1849));
console.log(obj.ping(4921));
console.log(obj.ping(5936));
console.log(obj.ping(5957));
console.timeEnd('执行用时');